package dao

import (
	"asuOfficialApi/model"
	"github.com/go-xorm/xorm"
	"log"
)

type TokenDao struct {
	engine *xorm.Engine
}

func NewTokenDao(engine *xorm.Engine) *TokenDao {
	return &TokenDao{
		engine: engine,
	}
}

func (d *TokenDao) InsertToken(token string, userId int64, userType int) (t *model.Token, err error) {
	data := &model.Token{Token: token, UserId: userId, UserType: userType, Status: model.TokenStatusValid}
	if _, err := d.engine.InsertOne(data); err != nil {
		log.Fatal("TokenDao.InsertToken 数据库插入错误")
		return nil, err
	} else {
		return data, nil
	}
}

func (d *TokenDao) FindByToken(token string) (t *model.Token, err error) {
	data := &model.Token{Token: token, Status: model.TokenStatusValid}
	if _, err := d.engine.Get(data); err != nil {
		log.Fatal("TokenDao.FindByToken 数据库查询错误")
		return nil, err
	} else {
		return data, nil
	}
}

func (d *TokenDao) FindByUserId(userId int64) (t *model.Token, err error) {
	data := &model.Token{UserId: userId, Status: model.TokenStatusValid}
	if _, err := d.engine.Get(data); err != nil {
		log.Fatal("TokenDao.FindByToken 数据库查询错误")
		return nil, err
	} else {
		return data, nil
	}
}

func (d *TokenDao) DeleteToken(token string) (err error) {
	data := &model.Token{Token: token, Status: model.TokenStatusValid}
	if _, err := d.engine.Delete(data); err != nil {
		log.Fatal("TokenDao.DeleteToken 数据库删除错误")
		return err
	} else {
		return nil
	}
}
